package com.youlu.campus.monitor.controller;

import com.youlu.campus.common.base.QResult;
import com.youlu.campus.monitor.entity.WechatMonitorTask;
import com.youlu.campus.monitor.entity.WechatMonitorTaskPageQuery;
import com.youlu.campus.monitor.service.WechatMonitorTaskService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * 微信监控任务接口层
 * 统一处理HTTP请求，调用Service获取业务结果，封装QResult返回
 *
 * @author su
 * @date 2025/09/02
 */
@RestController
@RequestMapping("/wechat/monitor/task") // 接口统一前缀，便于路由管理和权限控制
@Slf4j
public class WechatMonitorTaskController {

    // 依赖注入Service（根据项目规范可替换为构造器注入）
    @Resource
    private WechatMonitorTaskService taskService;

    /**
     * 新增微信监控任务
     * 请求方式：POST
     * 请求体：任务实体（不含id）
     */
    @PostMapping("/save")
    public QResult<WechatMonitorTask> saveTask(@RequestBody WechatMonitorTask task) {
        try {
            WechatMonitorTask savedTask = taskService.saveTask(task);
            return QResult.success(savedTask); // 成功：封装任务实体返回
        } catch (Exception e) {
            log.error("新增微信监控任务接口异常，任务信息：{}", task, e);
            return QResult.fail(e.getMessage()); // 失败：封装错误信息返回
        }
    }

    /**
     * 根据id删除微信监控任务
     * 请求方式：DELETE
     * 路径参数：任务id
     */
    @PostMapping("/delete")
    public QResult<Boolean> deleteTaskById(@RequestBody WechatMonitorTask task) {
        boolean deleteResult = taskService.deleteTaskById(task.getId());
        if (deleteResult) {
            return QResult.success(true); // 成功：返回true
        } else {
            return QResult.fail("删除失败：任务不存在"); // 失败：自定义提示
        }
    }

    /**
     * 根据id查询微信监控任务详情
     * 请求方式：GET
     * 路径参数：任务id
     */
    @GetMapping("/info")
    public QResult<WechatMonitorTask> getTaskById(@RequestParam String id) {
        WechatMonitorTask task = taskService.getTaskById(id);
        if (task != null) {
            return QResult.success(task); // 成功：返回任务详情
        } else {
            return QResult.fail("查询失败：任务不存在"); // 失败：自定义提示
        }
    }

    /**
     * 分页查询微信监控任务列表
     *
     * @param query
     * @return
     */
    @PostMapping("/find-page")
    public QResult<Page<WechatMonitorTask>> findByPage(@RequestBody WechatMonitorTaskPageQuery query) {
        Page<WechatMonitorTask> page = taskService.findByPage(query);
        return QResult.success(page);
    }
}
    